package com.heima.controller;

import com.heima.common.result.PageResult;
import com.heima.common.result.Result;
import com.heima.pojo.dto.NodePageDTO;
import com.heima.pojo.entity.Node;
import com.heima.pojo.vo.NodeCollectVO;
import com.heima.pojo.vo.NodeDetailVO;
import com.heima.pojo.vo.tbNodePageVO;
import com.heima.service.NodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 点位控制层
 * 路径: /api/vm-service/node
 */
@RestController
@RequestMapping("/api/vm-service/node")
@Slf4j
public class NodeController {
    
    @Autowired
    private NodeService nodeService;


    /**
     * 点位数据分页查询
     * @param nodePageDTO
     * @return
     */

    @GetMapping("/search")
    public PageResult<tbNodePageVO> page(NodePageDTO nodePageDTO){

        log.info("点位数据分页查询数据:{}",nodePageDTO);
        return nodeService.page(nodePageDTO);
    }

    /**
     * 新增点位
     * @param node
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Node node){
        log.info("新增点位数据{}",node);

        nodeService.addNode(node);
        return Result.success();
    }

    /**
     * 删除点位
     * @param id
     * @return
     */
    @DeleteMapping("/{nodeId}")
    public Result deleteNode(@PathVariable("nodeId") String id){
        log.info("删除点位id为:{}",id);
        nodeService.deleteNode(id);
        return Result.success();
    }
    /**
     * 修改点位
     * @param node
     * @return
     */
    @PutMapping("/{nodeId}")
    public Result updateNode(@PathVariable("nodeId") String id ,@RequestBody Node node){
        log.info("修改点位id为:{}",id);
        node.setId(id);
        nodeService.updateNode(node);
        return Result.success();
    }
    /**
     * 获取点位详情
     * @param id
     * @return
     */
    @GetMapping("/vmList/{nodeId}")
    public List<NodeDetailVO> findById(@PathVariable("nodeId") String id){
        log.info("获取点位id为:{}",id);
        List<NodeDetailVO> nodeDetailVO = nodeService.nodeDetail(id);
       return nodeDetailVO;
    }

   /**
     * 获取点位数量
     * @return
     */

    @GetMapping("/count")
    public Integer countNode(){
        return nodeService.count();
    }

    /**
     * 获取点位收藏
     * @return
     */
    @GetMapping("/nodeCollect")
    public List<NodeCollectVO> nodeCollect(){
        return nodeService.nodeCollect();
    }
}
